#if !defined(APP_DEVICE_H)
#define APP_DEVICE_H

#include "app_buffer.h"
#include <pthread.h>

// 设备结构体
typedef struct {
    char *filename;  //文件名
    int fd;        // 文件描述符
    Buffer *up_buffer;  // 上行缓冲区
    Buffer *down_buffer;    // 下行缓冲区
    pthread_t read_thread;  // 读线程的标识
    int is_running; // 读线程是否在运行的标识
    long last_write_time;   // 上次写数据的时间
    // 读后处理：对于读到的数据进行处理的函数
    int (*post_read)(char *data, int len);
    // 写后处理：对于写入到设备的数据进行处理函数
    int (*pre_write)(char *data, int len);
}Device;

// 初始化
Device *app_device_init(char *filename);

// 启动
int app_device_start();

// 销毁
int app_device_destroy();


#endif // APP_DEVICE_H
